/////////////////////////////////////////////////////////////////////////////
/*/	
 *	Creator:		Joshua C. Rouzer
 *	Title:			Base Class Header
 *	Last Edited:	06/14/2013
 *	Summary:		The ultimate base class for the unit hierarchy
/*/
/////////////////////////////////////////////////////////////////////////////
#ifndef CBASECLASS_H
#define CBASECLASS_H
#define WIN32_LEAN_AND_MEAN
#include <Windows.h>
#include "SPosition.h"
#include "AnimationSystem.h"

class CAnimInfo;

enum EntType {BASIC, MOVING, DEFENSE, PLAYER, BULLET, BASEUNIT,
	SHOOT, SHIELD, ROCKET, MECH, HELI, BARRICADE, GENERATOR, GEN_SHIELD,
	BASE, MISSILE, TURRET, BOSS};
class CBaseClass{
public:
	CBaseClass();
	CBaseClass(TCHAR filename, int nWidth, int nHeight, float nPosX = 0.0f, float nPosY = 0.0f);
	CBaseClass(TCHAR filename, int nWidth, int nHeight, SPosition sPos);
	virtual ~CBaseClass() = 0;
	virtual void Update(float dT);
	virtual void Render();
	RECT GetRect();
	void SetPosX		(float fPosX)	{m_sPos.m_nPosX = fPosX;}
	void SetPosY		(float fPosY)	{m_sPos.m_nPosY = fPosY;}
	void SetPosX		(SPosition pos)	{m_sPos = pos;}
	void SetRotation	(float fRot)	{m_fRotation = fRot;}
	void SetWidth		(int nWidth)	{m_nWidth = nWidth;}
	void SetHeight		(int nHeight)	{m_nHeight = nHeight;}
	void SetImage		(int nImage)	{m_nImage = nImage;}
	void SetTeam		(int nTeam)		{m_nTeam = nTeam;}
	void SetType		(EntType type)	{m_eType = type;}
	float GetPosX		()				{return m_sPos.m_nPosX;}
	float GetPosY		()				{return m_sPos.m_nPosY;}
	SPosition GetPos	()				{return m_sPos;}
	float GetRotation	()				{return m_fRotation;}
	int GetWidth		()				{return m_nWidth;}
	int GetHeight		()				{return m_nHeight;}
	int GetImage		()				{return m_nImage;}
	EntType GetType		()				{return m_eType;}
	int GetTeam			()				{return m_nTeam;}
protected:
	EntType m_eType;

	CAnimInfo* AnimationInfo;
	CAnimationSystem* AnimSystem;
	CAnchorPointAnimation* CurrAnim;
private:
	float m_fRotation;
	int   m_nWidth;
	int   m_nHeight;
	int   m_nImage;

	SPosition m_sPos;

	int m_nTeam;
};
#endif